/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cc.co.taciano.agenda2;

import cc.co.taciano.agenda2.beans.Perfil;
import cc.co.taciano.agenda2.beans.Usuario;
import cc.co.taciano.agenda2.bo.AgendaException;
import cc.co.taciano.agenda2.bo.PerfilBO;
import cc.co.taciano.agenda2.bo.UsuarioBO;
import java.util.List;

/**
 * Fachada do Sistema de Agenda.
 * @author Taciano Morais Silva
 */
public class Agenda {

    /**
     * Lista todos os usuários cadastrados no sistema.
     * @return A lista de usuários.
     */
    public List<Usuario> listarUsuarios() throws AgendaException {
        UsuarioBO bo = new UsuarioBO();
        return bo.listar();
    }

    /**
     * Busca o usuário a partir do seu identificador.
     * @param id O identificador do usuário.
     * @return O usuário localizado.
     */
    public Usuario buscarUsuario(Integer id) throws AgendaException {
        UsuarioBO bo = new UsuarioBO();
        return bo.buscar(id);
    }

    /**
     * Incluir usuário no sistema.
     * @param usuario O usuário a ser incluído.
     */
    public void incluirUsuario(Usuario usuario) throws AgendaException {
        UsuarioBO bo = new UsuarioBO();
        bo.incluir(usuario);
    }

    /**
     * Alterar os dados do usuário.
     * @param usuario O usuário a ser alterado.
     */
    public void alterarUsuario(Usuario usuario) throws AgendaException {
        UsuarioBO bo = new UsuarioBO();
        bo.alterar(usuario);
    }

    /**
     * Exclui o usuário do sistema.
     * @param usuario O usuário a ser excluído.
     */
    public void excluirUsuario(Usuario usuario) throws AgendaException {
        UsuarioBO bo = new UsuarioBO();
        bo.excluir(usuario);
    }

    /**
     * Exclui o usuário do sistema.
     * @param id O identificador do usuário a ser excluído.
     */
    public void excluirUsuario(Integer id) throws AgendaException {
        UsuarioBO bo = new UsuarioBO();
        bo.excluir(id);
    }

    public List<Usuario> pesquisar(String login, String nome, Perfil perfil)
            throws AgendaException {
        UsuarioBO bo = new UsuarioBO();
        return bo.pesquisar(login, nome, perfil);
    }

    public List<Perfil> listarPerfis() throws AgendaException {
        PerfilBO bo = new PerfilBO();
        return bo.listar();
    }
}
